The present claimed invention relates generally to an apparatus and method for programming an electronic device. More particularly, the present claimed invention relates to a system and a method of using a graphics applications programming interface in programming the design of a microcontroller.
Microcontroller devices which utilize nonvolatile memories, such as Electrically Programmable Read Only Memories (EPROMs) are well known in the art. The EPROM or flash memory generally contains the applications software for the microcontroller and must be programmed with data depending upon the particular intended application for the microcontroller. The application software is generally developed using a personal computer. Configuration registers can be programmed from the data loaded into the microcontroller""s programmable memory to in turn program hardware resources of the microcontroller.
The data representing this application software, commonly known as a load module, are then transferred to special purpose programming equipment, such as a Data I/O machine. The memory of the microcontroller is then programmed by the special purpose programming equipment usually without employing the processing capabilities of the microcontroller. When such special purpose programming equipment is used, the microcontroller is typically physically placed in the circuit of the programming equipment to accomplish the programming process.
Occasionally, it is necessary to modify the existing contents of the microcontroller""s memory, such as during testing, development, or adjustment of the process executed by the microcontroller. To perform this alteration with conventional microcontroller devices, it is usually necessary to remove the microcontroller from the system in which it is installed and place it in the circuit of the programming equipment.
Another technique that is currently used by microcontroller devices can be referred to as automatic self programming (ASP). ASP requires that the microcontroller containing programmable memory be placed in circuit with a source memory containing data that will be transferred to the microcontroller""s memory. When appropriate control signals and programming voltages are applied, the microcontroller transfers data from the source memory to its own memory. Clearly, this technique requires the source memory to be preprogrammed by special purpose programming equipment.
Some microcontroller devices include provisions for programming the microcontroller memory while the unit remains installed in the system. These devices manifest a feature commonly known as run time programming. Run time programming schemes generally provide special circuits that allow user application software to modify the memory contents. This modification or programming, is usually done by invoking a particular subroutine during the normal course of software execution. One disadvantage of run time programming is that it usually requires the user to devote a portion of the microcontroller""s available memory space to support the programming function. This memory space is generally used for a software subroutine that serves as an interface between the user""s application software and the microcontroller""s programming mechanism.
A second disadvantage of the run time programming is that they are not well suited to programming a completely new (un-programmed) microcontroller. Since most run time programming mechanisms are dependent on the above mentioned interface subroutine, they must have the interface subroutine installed by means of special purpose programming equipment before it can be used to program any of the remaining user memory space.
In addition to the drawback described above, the user interface portions of many conventional software applications for programming microcontrollers are very difficult to use. Many of the user interface windows used in the software tend to pop-up as the user is attempting to program the microcontroller. Windows in the design software are popped based on a xe2x80x9cflat-organizedxe2x80x9d drop down menu system with little or no cues as to the overall design process. Each window tends to correspond to a discrete function of the microcontroller and many functions may be required to do simple programming tasks. Importantly, the windows give no information as to which ones should be used first and the subsequent order that they should be used in. Also, it was difficult transitioning from one window to another for sharing resources because the programmer could not remember which window contained the source of data required data and which window needed the data. Having many windows open on a computer screen can often confuse the programmer as the programmer is unable to keep track of which window represents which function of the microcontroller.
Another drawback of the conventional microcontroller programming method described above is the inability to track hardware resources, such as memory, power, programmable logic, etc., used as the programmer adds or deletes components to a system that is to be implemented on a target device.
Accordingly, to take advantage of applications and the numerous microcontrollers being developed, a microcontroller programming application with extensibility capabilities to allow programmers to dynamically program a microcontroller with datasheets incorporated in the programming software is needed. A need also exists for xe2x80x9cout-of-the-boxxe2x80x9d microcontroller programming system solutions to allow programmers to efficiently organize design components necessary for the complete programming of a microcontroller without unduly tasking the programmer while tracking system resource usage by the target microcontroller. Specially, embodiments of the present invention provide an organized way of displaying configuration and design workspace information in an efficient manner including information regarding hardware resource usage.
Embodiments of the present invention are directed to a system and a method for using a graphical user interface system for programming microcontrollers in a microcontroller design environment. In general, embodiments of the present invention provide a graphics interface based modularized method of programming for designing features of a programmable microcontroller having programmable hardware resources while tracking available hardware resource blocks. In other words, the invention provides the programmer the ability to organize various functional components of the microcontroller with integrated datasheet information readily on the same computer screen by implementing click and drop features of the design software. The present invention also provides the programmer with resource monitoring capabilities for the programmer to perform monitoring of available programmable resources of the target microcontroller.
Embodiments of the invention include a microcontroller programming software application and system that include a configuration and design system that allows the programmer to compartmentalize the design of a microcontroller by modularizing the various components that create the desired functionality of the microcontroller using a graphics user interface. The contents of the configuration and design system are presented to the programmer in the form of sub-workspaces which are displayed on the programmer""s computer screen. The programmer is then able to navigate through various selection windows and icons to retrieve information on selected predefined and pre-configured user modules of the desired microcontroller components. The workspaces can be presented according to a predetermined sequence to aid the programmer""s development tasks.
Embodiments of the present invention include user modules that contain pre-configured functions or designs of a target microcontroller device and present the available resources in the design datasheets. The information provided by the user module is typically presented in the form of a window with icons of the available resources that may be selected by the programmer. The user modules once selected, placed and programmed work as peripherals of the target microcontroller.
Embodiments of the present invention also include a user module information presenter. The user module information presenter is presented to the programmer as sub-workspaces as of the overall design environment on the programmer""s computer screen. The user module information presenter provides detailed schematic information about a component selected by the programmer for incorporation into the microcontroller. The user module information presented allows the programmer to examine the functional details about a selected component before designing the selected component into the microcontroller.
Embodiments of the present invention also include a resource manager display system. The resource display manager system provides real-time histogram view (e.g., a graphical view showing cumulative use of different types of resources) of the resources being used by the programmer to design the desired microcontroller. The resource display manager enables the programmer to only select only enough user modules that the microcontroller provides resources. If the programmer selects a module that requires more resources than is available, the design software of the present invention will not allow such a selection. The resource manager displays hardware resource usage by type and contents occupied/vacant, etc.
Embodiments of the present invention also include a user selection module. The user selection module provides a catalog of selectable user modules that are available for the programmer to select and a schematic display of a selected user module with a corresponding datasheet information. This sub-workspaces allows the designer to select the appropriate user module for a particular function.
Embodiments of the present invention also include a user module data file for providing the programmer a data entry environment to interactively enter desired data information of portions or sub-portions of the functional components of the user modules. The data files can easily be updated by the programmer without having to change the underlying resource manager code to reflect the resource tracking that the programmer desires.
Embodiments of the present invention also include design system blocks that are used by the programmer to place selected user modules to help program the target microcontroller. The design system blocks are analog and digital hardware resource or peripheral blocks of a target microcontroller device that are customized by the placement and configuration of the user modules of the present invention.
Embodiments of the present invention also include a component information database that stores detailed description of the components that form the modularized functional blocks of the user modules.
These and other objects and advantages of the present invention will no doubt become obvious to those of ordinary skill in the art after having read the following detailed description of the preferred embodiments which are illustrated in the various drawing figures.